package com.emm.yixun.customer.service;

import java.util.Map;

import javax.jws.WebService;

import com.emm.yixun.common.app.base.CommonResDTO;
import com.emm.yixun.common.model.PayDeposit;
import com.emm.yixun.common.model.User;
import com.emm.yixun.common.model.dto.BusinessAbnormaDto;
import com.emm.yixun.common.model.dto.PayDepositDto;
import com.emm.yixun.common.page.Page;
import com.emm.yixun.common.response.Response;
import com.emm.yixun.common.response.ResponseList;

@WebService
public interface PayDepositServiceFacade {
	/**
	 * 新增
	 */
	Response<PayDepositDto> save(PayDepositDto dto);

	/**
	 * 修改,当selective=true时修改非空列,当selective=false修改所有列
	 */
	Response<Integer> updateByPrimaryKey(PayDepositDto dto, Boolean selective);

	/**
	 * 逻辑删除
	 */
	Response<Integer> deleteByPrimaryKey(Long id);

	/**
	 * 主键查询
	 */
	Response<PayDeposit> findById(Long id);

	/**
	 * 根据dto查询记录
	 */
	ResponseList<PayDeposit> findByDto(PayDepositDto dto);

	/**
	 * 根据dto查询记录
	 */
	ResponseList<PayDeposit> findByDtoJ(PayDepositDto dto);

	/**
	 * 根据dto以及分页参数查询记录
	 */
	Page<PayDeposit> findPageByDto(PayDepositDto dto, Integer begin, Integer row);

	/**
	 * 获取认筹列表
	 * 
	 * @param reqDto
	 * @return 操作结果
	 */
	public Response<Page<PayDepositDto>> getPayDepositList(PayDepositDto reqDto, Integer pageSize, Integer pageNum);

	/**
	 * 认筹 1.保存认筹信息 2.保存家庭成员信息
	 */
	Response<PayDepositDto> addPayDeposit(String params, User user) throws Exception;

	/**
	 * 方法描述 : 认筹更名 创建者：ThinkPad 项目名称： emm-customer-api 类名： PayDepositServiceFacade.java 版本： v1.0 创建时间： 2016年8月26日
	 * 下午2:40:11
	 * 
	 * @param params
	 * @return Response<Boolean>
	 */
	Response<Boolean> changeService(String params, User user) throws Exception;

	/**
	 * 创建退认筹消息
	 * 
	 * @param payDepositDto
	 * @return
	 */
	public CommonResDTO addNotice_TRC(BusinessAbnormaDto businessAbnormaDto, Map<String, Object> managerMap,
			String procInstId);

	/**
	 * 认筹申请推送消息
	 * 
	 * @param businessAbnormaDto
	 * @param managerMap
	 * @param procInstId
	 * @return
	 */
	public CommonResDTO addNotice_RC(PayDepositDto payDepositDto, Map<String, Object> managerMap, String procInstId);

	/**
	 * 客户交易状态更新（多套交易）
	 * 
	 * @param bugType
	 *            业务类型： 1 认筹、2 认购、3 签约
	 * @param busId
	 *            对应业务类型Id
	 * @param customerId
	 *            客户Id
	 * @param userId
	 *            用户Id
	 * @return
	 */
	public int getCustomerEntity(String bugType, Long busId, Long customerId, Long userId);

	/**
	 * 客户信息 功能描述: <br>
	 * 〈功能详细描述〉
	 * 
	 * @param id
	 * @return
	 * @see [相关类/方法](可选)
	 * @since [产品/模块版本](可选)
	 */
	public Response<PayDepositDto> selectPayDepositCustomer(Long id);

}
